package com.yhq.basic.jvm.dataarea;

import java.util.ArrayList;
import java.util.List;

/**
 * 观察 运行时数据区内存布局
 * 工具：
 * 1. 通过运行是参数 -Xms1m -Xmx2m -XX:SurvivorRatio=8 -XX:+PrintGCDetails -XX:+PrintGCTimeStamps
 * 2. 通过arthas分析，arthas使用方式：https://arthas.aliyun.com/doc/quick-start.html#_2-%E5%90%AF%E5%8A%A8-arthas
 * 3. 通过visualvm， 注意jdk>=8没有自带visualvm了，需要自行安装，安装链接：https://visualvm.github.io/index.html，安装GC插件：https://blog.csdn.net/Goals1989/article/details/126410998
 * 了解jVM内存配置常用参数
 * 1. -Xms3072M 设置堆内存初始化大小
 * 2. -Xmx3072M 设置堆内存最大值
 * 3. -Xmn2048M 设置新生代初始值及最大值
 * 4. -Xss1M 设置线程栈占用内存大小
 * 5. -XX:MetaspaceSize=256M
 * 6. -XX:MaxMetaspaceSize=256M
 * 7. -XX:NewRatio=2 老年代：新生代2:1
 * 8: -XX:SurvivorRatio=8 eden:to:from=8:1:1
 *
 * @author hqyin
 * @date 2024/2/20 3:10 PM
 */
public class Demo3RuntimeDataAreaLayout {
    public static void main(String[] args) throws InterruptedException {
        List<Demo3RuntimeDataAreaLayout> list = new ArrayList<>();
        int i = 0;
        while (true) {
            list.add(new Demo3RuntimeDataAreaLayout());
            System.out.println("加入lsit第"+(++i)+"对象");
            Thread.sleep(500);
        }
    }
}

